package com.example.datamanage.mapper;

import org.apache.ibatis.annotations.Param;

import java.util.LinkedHashMap;
import java.util.List;

/**
 * @author 28142
 * @description 数据查询 mapper接口
 * @date 2023/7/26 17:29
 */
public interface DataMapper {
    /**
     * 查询库下所有表，不包含视图
     * @author 杨雨盛
     * @date 2023/7/31 15:53
     * @param database
     * @return java.util.List<java.util.LinkedHashMap<java.lang.String,java.lang.String>>
     */
    List<LinkedHashMap<String, String>> showTables(String database);

    List<LinkedHashMap<String, String>> showTablesMS(String database);

    /**
     * 获取表格个数
     * @author 杨雨盛
     * @date 2023/8/2 16:38
     * @param database
     * @return int
     */
    int getTablesNum(String database);

    int getTablesNumMS(String database);

    /**
     * 查询库下所有视图
     * @author 杨雨盛
     * @date 2023/7/31 15:53
     * @param database
     * @return java.util.List<java.util.LinkedHashMap<java.lang.String,java.lang.String>>
     */
    List<LinkedHashMap<String, String>> showViews(String database);

    List<LinkedHashMap<String, String>> showViewsMS(String database);

    /**
     * 获取视图个数
     * @author 杨雨盛
     * @date 2023/8/2 16:38
     * @param database
     * @return int
     */
    int getViewsNum(String database);

    int getViewsNumMS(String database);

    /**
     * 根据条件查询表信息
     * @author 杨雨盛
     * @date 2023/8/1 14:33
     * @param database
     * @param chName
     * @param enName
     * @return java.util.List<java.util.LinkedHashMap<java.lang.String,java.lang.String>>
     */
    List<LinkedHashMap<String, String>> showTablesByCondition(
            @Param("database") String database,
            @Param("chName") String chName,
            @Param("enName") String enName,
            @Param("start") Integer start,
            @Param("pageSize") Integer pageSize
    );

    /**
     * 条件查询总数
     * @author 杨雨盛
     * @date 2023/8/2 17:50
     * @param database
     * @param chName
     * @param enName
     * @return int
     */
    int showTablesNumByCondition(@Param("database") String database,
                                 @Param("chName") String chName,
                                 @Param("enName") String enName);

    /**
     * 查询库下所有表，包含视图
     * @author 杨雨盛
     * @date 2023/7/31 15:54
     * @param database
     * @return java.util.List<java.util.LinkedHashMap<java.lang.String,java.lang.String>>
     */
    List<LinkedHashMap<String, String>> showAllTables(String database);

    List<LinkedHashMap<String, String>> showColumns(@Param("database") String database,
                                                    @Param("table") String table);

    int getColLen(@Param("database") String database,
                  @Param("table") String table);

    int getRecordsLen(@Param("database") String database,
                      @Param("table") String table);

    List<LinkedHashMap<String, Object>> exportData(
            @Param("table") String table,
            @Param("fields") List<String> fields
    );
}
